package com.itheima.d8_thread_pool;

import java.util.concurrent.*;

/*
    目标：掌握线程池的创建。

    Executors : 是一个线程池的工具类，提供了很多静态方法用于返回不同特点的线程池对象。
    方法名称
        public static ExecutorService newFixedThreadPool(int nThreads)	创建固定线程数量的线程池，如果某个线程因为执行异常而结束，那么线程池会补充一个新线程替代它。
        public static ExecutorService newSingleThreadExecutor()	创建只有一个线程的线程池对象，如果该线程出现异常而结束，那么线程池会补充一个新线程。
        public static ExecutorService newCachedThreadPool()	线程数量随着任务增加而增加，如果线程任务执行完毕且空闲了60s则会被回收掉。
        public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)	创建一个线程池，可以实现在给定的延迟后运行任务，或者定期执行任务。

 */
public class ThreadPoolTest4 {
    public static void main(String[] args) throws Exception {
        // 1. 固定线程数量

    }

    // 1. 固定线程数量
    public static ExecutorService newFixedThreadPool(int threadNum) {
        return new ThreadPoolExecutor(
                threadNum,
                threadNum,
                30,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(0),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );
    }
}
